# Load with dill
import dill
with open('schuheinlagen_orakel.dill', 'rb') as f:
ki_modell = dill.load(f)
import pandas as pd
bauteil = pd.DataFrame({
'Zellenform': [1],
'Zellengroesse': [3.0],
'Fuellgrad': [0.3]
})
bauteil.head()
| Zellenform | Zellengroesse | Fuellgrad | |
|---|---|---|---|
| 0 | 1 | 3.0 | 0.3 |
import numpy as np
N = 100
variation_zellenform = np.ones(N)
np.random.seed(42)
variation_zellengroesse = 3.0 + np.random.normal(0, 0.5, N)
variation_fuellgrad = 0.3 + np.random.normal(0, 0.05, N)
eingabedaten = pd.DataFrame({
'Zellenform': variation_zellenform,
'Zellengroesse': variation_zellengroesse,
'Fuellgrad': variation_fuellgrad
})
ausgabedaten = ki_modell.predict(eingabedaten)
abstaende = ((eingabedaten['Zellengroesse'] - 3.0)**2 + (eingabedaten['Fuellgrad'] - 0.3)**2)**0.5
gewichte = -2/3 * abstaende + 1
from sklearn.linear_model import LinearRegression
modell = LinearRegression()
modell.fit(eingabedaten, ausgabedaten, sample_weight=gewichte)
score = modell.score(eingabedaten, ausgabedaten)
print(score)
print(modell.coef_)
0.8904881638530242
[ 0. -2.45507152 635.33023841]
eingabedaten['Fuellgrad'].to_list()
[0.22923146289747925,
0.278967733861732,
0.2828642741736615,
0.259886136538919,
0.2919357144166995,
0.3202025428407269,
0.3943092950605265,
0.3087288906415919,
0.3128775195361382,
0.29627770421169164,
0.2040614392350479,
0.29867430622753915,
0.30301151049705133,
0.4231621056242643,
0.29038195176094383,
0.3150773671166806,
0.2982644115147378,
0.24156609811902338,
0.35714114072575104,
0.3375966516343387,
0.33955159735215235,
0.25453062726026304,
0.37013971554680497,
0.22990744686038594,
0.3293428546900135,
0.4095227812904989,
0.25047318374346556,
0.2716851135198614,
0.304982568254382,
0.27482621729419004,
0.22246682844669335,
0.30342814874030133,
0.24688481431369474,
0.32367962153175905,
0.2540287882883098,
0.377496720250877,
0.26083733538318815,
0.28389692418971624,
0.34067586086848345,
0.23845678417830224,
0.31137299673020646,
0.36535713771412137,
0.2196258382719386,
0.3092316929266152,
0.3129941397124212,
0.3390911435888655,
0.2381524644560959,
0.23397716934578616,
0.3260970782808449,
0.3148492336616593,
0.31252464251729384,
0.31732241047484877,
0.26599876392107547,
0.31161268485805016,
0.31465362366493405,
0.2642824290986816,
0.3932887255572378,
0.32369164604558937,
0.24043482513986755,
0.3328276804316915,
0.25126591648863394,
0.3393542301871226,
0.3579297789503702,
0.25896588408241444,
0.3481688064622161,
0.3206390463468249,
0.3411030079997245,
0.39483964913269737,
0.28773059419985647,
0.26231319178212553,
0.25552427851872384,
0.2592094857517281,
0.29614491452929476,
0.31705759874083217,
0.31383453996650096,
0.3413591624518012,
0.30065009459389536,
0.37267670385786583,
0.2867671583381022,
0.43600845832948093,
0.3312833673882503,
0.25714212217918586,
0.24645537509694437,
0.3241236207621593,
0.28882686073370745,
0.3357000247046046,
0.32366188122867723,
0.29635855436715636,
0.25766031409657975,
0.22425763876570676,
0.27767425239664895,
0.34281993971617364,
0.3107046872065102,
0.2377130610644006,
0.3086590462925591,
0.3192658689864418,
0.25580712818994333,
0.3076862552972764,
0.3029104359223,
0.24285148510846882]
import plotly.express as px
import plotly.graph_objects as go
from ipywidgets import interact, FloatSlider
import numpy as np
# Scatter plot
fig = px.scatter(eingabedaten,
x='Fuellgrad',
y=ausgabedaten,
title='Regressionsgerade für maximale Kraft abhängig vom Füllgrad',
labels={'y': 'maximale Kraft[N]'}
)
# Interactive function for updating the regression line
def update_regression_line(weight=1.0, intercept=0.0):
fig.data = [] # Clear existing data to avoid overlapping lines
fig.add_trace(go.Scatter(x=eingabedaten['Fuellgrad'], y=ausgabedaten, mode='markers', name='Daten'))
# Calculate regression line based on slider values
regression_line = weight * eingabedaten['Fuellgrad'] + intercept
fig.add_trace(go.Scatter(
x=eingabedaten['Fuellgrad'],
y=regression_line,
mode='lines',
name='Regressionsgerade',
line=dict(color='red')
))
fig.update_layout(xaxis_range=[0.15, 0.45], yaxis_range=[0,250])
fig.show()
# Sliders for controlling weight and intercept
interact(
update_regression_line,
weight=FloatSlider(value=1.0, min=500, max=600, step=5, description='Steigung'),
intercept=FloatSlider(value=0.0, min=-120, max=-100, step=1, description='y-Achsenabschnitt')
)
<function __main__.update_regression_line(weight=1.0, intercept=0.0)>